This invention relates to a reconfigurable programmable logic system including a programmable logic device and an associated processor, in which a configuration file includes identifications of peripheral devices in the current configuration.
Early programmable logic devices were onetime configurable. For example, configuration may have been achieved by “blowing”—i.e., opening—fusible links. Alternatively, the configuration may have been stored in a programmable read-only memory. Later, programmable logic devices incorporating erasable programmable read-only memory (EPROM) for configuration became available. These devices could be reconfigured.
Still later, programmable logic devices incorporating static random access memory (SRAM) for configuration became available. These devices, which also can be reconfigured, store their configuration in a nonvolatile memory such as an EPROM, from which the configuration is loaded when the device is powered up. Such devices typically include the circuitry necessary to load the configuration from the nonvolatile storage.
More recently, programmable logic devices have been provided as part of systems that can include, separately or on the same chip, processors, memory, busses, UARTs, timers, various types of controllers, etc. In such programmable systems, the programmable logic device can be used to provide specialized user-designed logic functions, or it can be configured as one or more peripheral devices, such as modems, network interfaces, ports of various types, etc. If the programmable logic device is large enough, it can be configured to have a plurality of functions including both peripheral devices and user logic.
For each peripheral device configured in the programmable logic, the processor of the system may need driver software. Known methods for programming programmable logic devices have heretofore not included mechanisms for identifying such drivers as may be needed, or the number of instances of each driver that may be needed. Moreover, the programmable logic in such systems typically is reconfigurable, meaning that a system of the type described can change, so that it no longer needs certain drivers that had been loaded, while at the same time it needs certain new drivers.
It would be desirable in a reconfigurable programmable logic system to be able to provide a method for identifying and loading the necessary drivers, and creating and configuring the necessary instances of each driver, on reconfiguration of the system, and also, on a second or subsequent configuration, to avoid conflicts with drivers that are no longer needed.